package com.demandbreakdown.xiyun.common.base;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 业务响应状态码枚举
 *
 * @author poxz
 */
@Getter
@AllArgsConstructor
public enum ResultCode {

    // === 成功状态 ===

    // 操作成功
    SUCCESS(20000, "操作成功"),

    // === 客户端错误 ===

    // === 通用错误 ===

    // 请求参数错误
    BAD_REQUEST(40000, "请求参数错误"),

    // 未授权，需要登录
    UNAUTHORIZED(40001, "未授权，请先登录"),

    // 禁止访问
    FORBIDDEN(40003, "禁止访问"),

    // 资源不存在
    NOT_FOUND(40004, "资源不存在"),

    // === 参数错误 ===

    // 参数错误
    PARAMS_ERROR(40100, "参数错误"),

    // === 用户认证错误 ===

    // 用户不存在
    USER_NOT_FOUND(40200, "用户不存在"),

    // 用户已存在
    USER_ALREADY_EXISTS(40201, "用户已存在"),

    // 密码错误
    USER_PASSWORD_ERROR(40202, "密码错误"),

    // 用户未登录
    USER_NOT_LOGIN(40203, "用户未登录"),

    // 用户无权限
    USER_NO_PERMISSION(40204, "用户无权限"),

    // 两次密码不一致
    USER_PASSWORD_NOT_MATCH(40205, "两次密码不一致"),

    // 账号或密码错误
    USER_ACCOUNT_OR_PASSWORD_ERROR(40206, "账号或密码错误"),

    // 账号已被禁用
    USER_ACCOUNT_DISABLED(40207, "账号已被禁用"),

    // 旧密码错误
    USER_OLD_PASSWORD_ERROR(40208, "旧密码错误"),

    // 新密码与旧密码相同
    USER_PASSWORD_SAME(40209, "新密码不能与旧密码相同"),

    // 用户信息更新失败
    USER_UPDATE_FAILED(40210, "用户信息更新失败"),

    // === 图片相关错误 ===

    // 图片不存在
    PICTURE_NOT_FOUND(40300, "图片不存在"),

    // 图片格式不支持
    PICTURE_FORMAT_ERROR(40301, "图片格式不支持"),

    // 图片大小超出限制
    PICTURE_SIZE_EXCEEDED(40302, "图片大小超出限制"),

    // === 空间相关错误 ===

    // 空间不存在
    SPACE_NOT_FOUND(40400, "空间不存在"),

    // 空间容量已满
    SPACE_FULL(40401, "空间容量已满"),

    // 空间成员已达上限
    SPACE_MEMBER_LIMIT(40402, "空间成员已达上限"),

    // 邀请码无效或过期
    SPACE_INVITE_CODE_INVALID(40403, "邀请码无效或过期"),

    // === 邮件相关错误 ===

    // 邮箱验证码错误
    EMAIL_CAPTCHA_ERROR(40500, "邮箱验证码错误"),

    // 邮件发送过于频繁
    EMAIL_SEND_TOO_FREQUENT(40501, "邮件发送过于频繁"),

    // === 服务器错误 ===

    // 系统内部错误
    SYSTEM_ERROR(50000, "系统内部错误");

    /**
     * 状态码
     */
    private final Integer code;

    /**
     * 状态信息
     */
    private final String message;
}
